const express = require('express');
const router = express.Router();
const Logs = require("../../../controllers/sys_logs.controller");
const Sse = require("../../../controllers/sys_sse.controller");


/**
 * @typedef loginLogBody
 * @property {string[]} createdAt - 登录时间
 * @property {string} userName - 登录账号
 * @property {boolean} status - 登录状态
 * @property {number} currentPage - 当前页码
 * @property {number} pageSize - 每页条数
 */

/**
 * 登录日志 - 分页
 * @route POST /api/private/logs/login-log
 * @group 日志管理
 * @security JWT
 * @param {loginLogBody.model} body.body - 请求参数
 * @returns {PageModel.model} 成功 返回列表
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/login-log", Logs.login);

/**
 * 删除登录日志
 * @route POST /api/private/logs/login-log/delete
 * @group 日志管理
 * @security JWT
 * @param {object} body.body 请求参数 id 必填 [] 支持多个
 * @returns {ResponseMeta.model} 成功
 * @returns {ResponseMeta.model} 错误异常
*/
router.post("/login-log/delete", Logs.deleteLogin);

/**
 * @typedef onlineMeta
 * @property {string} userId - 用户ID
 * @property {string} userName - 用户账号
 * @property {onlineInfo.model} info - 登录信息
 */

/**
 * @typedef onlineInfo
 * @property {string} ip - IP地址
 * @property {string} address - 登录地址
 * @property {string} browser - 浏览器
 * @property {string} system - 操作系统
 */

/**
 * 在线用户
 * @route POST /api/private/logs/online
 * @group 日志管理
 * @security JWT
 * @returns {onlineMeta[]} 成功
 * @returns {ResponseMeta.model} 错误异常
*/
router.post("/online", Logs.online);

/**
 * 强制退线
 * @route POST /api/private/logs/online/force
 * @group 日志管理
 * @security JWT
 * @param {object} body.body 请求参数 id 必填
 * @returns {ResponseMeta.model} 成功
 * @returns {ResponseMeta.model} 错误异常
*/
router.post("/online/force", (req, res) => {
    const pm = req.body;
    if (!pm.id) return res.sendResult({ data: '', code: -1, message: "ID不能为空！" });
    Sse.sendByUserId(pm.id, { type: "force" })
    res.sendResult({ data: '', code: 0, message: "操作成功！" })
});

/**
 * 系统日志
 * @route GET /api/private/logs/system
 * @group 日志管理
 * @security JWT
 * @returns {ResponseMeta.model} 成功
 * @returns {ResponseMeta.model} 错误异常
*/
router.get("/system", Logs.system);

/**
 * 系统日志详情
 * @route POST /api/private/logs/system/detail
 * @group 日志管理
 * @security JWT
 * @returns {ResponseMeta.model} 成功
 * @returns {ResponseMeta.model} 错误异常
*/
router.post("/system/detail", Logs.systemDetail);
/**
 * 删除系统日志
 * @route POST /api/private/logs/system/delete
 * @group 日志管理
 * @security JWT
 * @returns {ResponseMeta.model} 成功
 * @returns {ResponseMeta.model} 错误异常
*/
router.post("/system/delete", Logs.deleteSystem);

/**
 * @typedef operationLogBody
 * @property {string} userName - 用户账号
 * @property {string[]} requestTime - 请求时间
 */

/**
 * 操作日志
 * @route POST /api/private/logs/operation-log
 * @group 日志管理
 * @security JWT
 * @param {operationLogBody.model} body.body - 请求参数
 * @returns {PageModel.model} 成功 返回列表
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/operation-log", Logs.operation);

/**
 * 操作日志详情
 * @route POST /api/private/logs/operation-log/detail
 * @group 日志管理
 * @security JWT
 * @param {object} body.body 请求参数 id 必填
 * @returns {opLogsModel.model} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/operation-log/detail", Logs.operationDetail);


module.exports = router;
